TM Reflection

这是第二次图灵机大作业完成后的反思与总结,将分为如下几部分:

  • 架构的反思
  • debug的过程

架构的反思

1.TuringMachine的构造函数过于复杂,夹杂了许多功能,可创建Util工具类,使代码低耦合,数据与职责一致

2.Q, State,TransitionFuction之间的映射关系要理清,是个不错的架构,值得学习

3.对于Executor,它拥有的是Tapes,因此他的快照等功能应该是调用Tape的方法来“拼凑”实现整体,而不应该在Executor中调用到Tracks层面

debug的过程

1.第一次运行,什么错误信息都没有,什么输出都没有,合理推测问题在Execute方法,处理了一系列格式化问题,都怪猪脚需求写的不清楚(拍桌子)

发现需要知道空格符号,使我下定了改为自顶而下架构的决心,Executor没有理由需要知道B是什么符号,一次重构,费了点时间,但也算有收获

2.肉眼对比输出结果的我像个憨批,下次丕定(

3.第二次运行,发现多报了错误流信息,居然把String直接扔到Character集合中了,我当时怕是写傻了

4.顺手把错误检查全过了,Resolver判断是否冲突需要对上文所说两重映射完全理解

5.最后一出错点,挂掉我4个用例,居然是很浅显的错误,移动磁头(我一直很相信你的啊喂……),再一次警告自己不要乱复制